//
// This software is now distributed according to
// the Lesser Gnu Public License. Please see
// http://www.gnu.org/copyleft/lesser.txt for
// the details.
// -- Happy Computing!
//
package com.stevesoft.pat;

/**
 * This method implements the pattern elements $1, $2, etc in a substitution
 * rule. The apply(StringBufferLike sb,RegRes rr) method of this ReplaceRule
 * simply appends the contents of rr.stringMatched(n), where n is the integer
 * supplied to the constructor.
 */
public class BackRefRule extends ReplaceRule {

	int n;

	public BackRefRule(int n) {
		this.n = n;
	}

	public void apply(StringBufferLike sb, RegRes res) {
		String x = res.stringMatched(n);
		sb.append(x == null ? "" : x);
	}

	public String toString1() {
		return "$" + n;
	}

	public Object clone1() {
		return new BackRefRule(n);
	}
}
